Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Rendered • View rawDownload


docs/agents/skills/lxmf-messaging/SKILL.md dev (af76f09d) Text, 2.99 KB

Skill: lxmf-messaging

Change LXMF messaging, stamps, propagation, or attachments without breaking local-first mesh delivery or identity scoping.

When to use

• Outbound/inbound LXMF, conversations, receipts, stamps
• Propagation nodes, sync, inbound cancel, transfer limits
• Attachments, images, RNCP handoff from chat
• Config knobs that map to LXMRouter behaviour

Intent

LXMF is store-and-forward mail on Reticulum. Do not require clearnet, DNS, or a central API to deliver messages. Address peers by destination hash and aspect T383838lxmf.delivery.

Key paths

┌──────────────────────────┬───────────────────────────────────────────────────────────────────────┐
│ Area │ Path │
├──────────────────────────┼───────────────────────────────────────────────────────────────────────┤
│ Identity / router wiring │ T383838meshchatx/src/backend/identity_context.py
│ Message handler │ T383838meshchatx/src/backend/message_handler.py (and related) │
│ HTTP/WS surface │ T383838meshchatx/meshchat.py
│ Inbound cancel helpers │ T383838meshchatx/src/backend/meshchat_utils.py (T383838list_inbound_deliveries, T383838ca… │
│ Frontend conversations │ T383838meshchatx/src/frontend/components/ conversation viewers │
│ Config │ config managers / settings UI for LXMF options │
└──────────────────────────┴───────────────────────────────────────────────────────────────────────┘

LXMF 1.1 / RNS 1.4 inbound cancel

Large inbound LXMF deliveries use RNS Resources. LXMF exposes:

• T383838LXMRouter.inbound_resources() / T383838inbound_count()
• T383838cancel_inbound(resource_hash) and T383838cancel_all_inbound()

MeshChatX surfaces them as:

• Status: T383838inbound_delivery_count and T383838inbound_deliveries on T383838/api/v1/lxmf/propagation-node/status
• Cancel: T383838POST /api/v1/lxmf/propagation-node/cancel-inbound with optional T383838{ "resource_hash": "..." }
• Header UI in T383838App.vue when active inbound transfers exist

Outbound cancel remains T383838POST /api/v1/lxmf-messages/{hash}/cancel via T383838cancel_outbound.

Keep minimum versions: T383838rns>=1.4.1, T383838lxmf>=1.1.0.

Gates

1. Missing path: request path, allow propagate, surface recoverable state. No infinite spinner for LoRa-class delay.
2. Payload size justified. Large files use RNCP or explicit transfer tools, not giant chat blobs.
3. No cross-identity inbox or cache sharing.
4. Do not log private keys or unredacted message bodies by default.
5. Stamp and validation settings must match installed lxmf/rns versions.

Verification

Prefer focused backend tests around the changed manager, plus frontend tests when UI sends or displays messages.

T282828
uv run pytest tests/backend/test_phased_startup_guards.py -q --tbTff7b72=short


Also: T383838reticulum-design-gates, T383838deferred-network-startup, T383838identity-switch-teardown.


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────